tg-me.com/knowledge_accumulator/38
Last Update:
AutoML-Zero [2020] - когда оракул помогает поиску.
Можно ли с нуля и без априорных знаний сгенерировать код нейронной сети? Оказывается, в целом можно.
Применяем эволюционный поиск программ:
1) Задаём базовую структуру программы: нам нужно обучить 3 куска кода - для инициализации, для шага обучения и применения. То, как они используется, заранее задано, там простой train-loop. То есть одна программа это реализация трёх функций.
2) Определяем набор операций, которые можно использовать - берём базовые математические операции над скалярами, матрицами и векторами. И добавляем возможность самому инициализировать новые такие объекты.
3) Поддерживаем "популяцию" из N программ
4) В процессе оптимизации берём программы и применяем к ним мутации (случайно добавляем/удаляем/изменяем команду или другие случайные изменения)
5) Оцениваем новые программы, прогоняя процесс обучения, оставляем удачные варианты в популяции.
6) Прогоняем триллион программ в рамках оптимизации и готово!
Важно заметить, что несмотря на случайную природу мутаций, AutoML-Zero ищет программу быстрее (экспоненциально), чем нашёл бы простой случайный поиск программ. Ключом тут является способность эволюционного алгоритма закреплять локальный успех.
Но каждый локальный успех по отдельности это миллиарды экспериментов - например, понадобилось 10^10 программ, чтобы собрать линейную модель. Поэтому такой подход имеет узкие рамки для использования.
Но зато всё это крайне весело.
@knowledge_accumulator
BY Knowledge Accumulator

Share with your friend now:
tg-me.com/knowledge_accumulator/38